package io.github.echarts.option.series;

import io.github.echarts.option.style.ItemStyle;
import io.github.echarts.option.style.LineStyle;

/**
 * 雷达图系列配置。
 */

public class RadarSeries extends SeriesOption {
    
    private static final long serialVersionUID = 1L;
    private static final String TYPE = "radar";
    
    private LineStyle lineStyle;
    private ItemStyle itemStyle;
    private Boolean showSymbol;
    private String symbol;
    private Integer symbolSize;
    private String areaStyle;
    private String shape;
    
    /**
     * 构造一个新的雷达图系列配置实例。
     */
    public RadarSeries() {
        setType(TYPE);
    }
    
    /**
     * 获取线条样式。
     *
     * @return 线条样式
     */
    public LineStyle getLineStyle() {
        return lineStyle;
    }
    
    /**
     * 设置线条样式。
     *
     * @param lineStyle 线条样式
     * @return 当前配置实例，用于链式调用
     */
    public RadarSeries setLineStyle(LineStyle lineStyle) {
        this.lineStyle = lineStyle;
        return this;
    }
    
    /**
     * 获取标记点的样式。
     *
     * @return 标记点样式
     */
    public ItemStyle getItemStyle() {
        return itemStyle;
    }
    
    /**
     * 设置标记点的样式。
     *
     * @param itemStyle 标记点样式
     * @return 当前配置实例，用于链式调用
     */
    public RadarSeries setItemStyle(ItemStyle itemStyle) {
        this.itemStyle = itemStyle;
        return this;
    }
    
    /**
     * 是否显示标记点。
     *
     * @return 如果显示标记点则为true，否则为false
     */
    public Boolean getShowSymbol() {
        return showSymbol;
    }
    
    /**
     * 设置是否显示标记点。
     *
     * @param showSymbol 如果要显示标记点则为true，否则为false
     * @return 当前配置实例，用于链式调用
     */
    public RadarSeries setShowSymbol(Boolean showSymbol) {
        this.showSymbol = showSymbol;
        return this;
    }
    
    /**
     * 获取标记点图形类型。
     * 可选值：'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow', 'none'
     *
     * @return 标记点图形类型
     */
    public String getSymbol() {
        return symbol;
    }
    
    /**
     * 设置标记点图形类型。
     *
     * @param symbol 标记点图形类型
     * @return 当前配置实例，用于链式调用
     */
    public RadarSeries setSymbol(String symbol) {
        this.symbol = symbol;
        return this;
    }
    
    /**
     * 获取标记点大小。
     *
     * @return 标记点大小
     */
    public Integer getSymbolSize() {
        return symbolSize;
    }
    
    /**
     * 设置标记点大小。
     *
     * @param symbolSize 标记点大小
     * @return 当前配置实例，用于链式调用
     */
    public RadarSeries setSymbolSize(Integer symbolSize) {
        this.symbolSize = symbolSize;
        return this;
    }
    
    /**
     * 获取区域填充样式。
     *
     * @return 区域填充样式
     */
    public String getAreaStyle() {
        return areaStyle;
    }
    
    /**
     * 设置区域填充样式。
     *
     * @param areaStyle 区域填充样式
     * @return 当前配置实例，用于链式调用
     */
    public RadarSeries setAreaStyle(String areaStyle) {
        this.areaStyle = areaStyle;
        return this;
    }
    
    /**
     * 获取雷达图形状。
     * 可选值：'polygon', 'circle'
     *
     * @return 雷达图形状
     */
    public String getShape() {
        return shape;
    }
    
    /**
     * 设置雷达图形状。
     *
     * @param shape 雷达图形状
     * @return 当前配置实例，用于链式调用
     */
    public RadarSeries setShape(String shape) {
        this.shape = shape;
        return this;
    }
    
    @Override
    public Object getData() {
        return super.getData();
    }
    
    @Override
    public RadarSeries setData(Object data) {
        super.setData(data);
        return this;
    }

    /**
     * 覆盖父类的方法，确保返回具体的RadarSeries类型。
     *
     * @param name 系列名称
     * @return 当前配置实例，用于链式调用
     */
    @Override
    public RadarSeries setName(String name) {
        super.setName(name);
        return this;
    }
} 